#ifndef _DEFTRACK_CTRACKEDOBJECT_H_
#define _DEFTRACK_CTRACKEDOBJECT_H_

#include <buola/mat.h>
#include <buola/image/ccolor.h>
#include <buola/scene/transform/crigidbody.h>
#include <buola/scene/geodes/ccapsule.h>
#include <buola/io/curi.h>
#include <buola/cv/ccloud.h>

namespace buola { namespace tracker {

class CTrackedObject
{
public:
    virtual ~CTrackedObject() {}
    
    virtual int GetK()=0;
    virtual cvi::CCloud_rgb8 FilterCloud(const cvi::CCloud_rgb8 &pCloud)=0;
    virtual mat::CMat_f GetCloudFeatures(const cvi::CCloud_rgb8 &pCloud)=0;
    virtual mat::CMat_f GetObjectFeatures()=0;

    virtual void AddToScene(const scene::PScene &pScene)=0;
    virtual void ApplyEvidence(const mat::CMat_f &pPZGivenC,const mat::CMat_f &pObserved,const mat::CMat_f &pObject)=0;
protected:
};

/*namespace tracker*/ } /*namespace buola*/ }

#endif
